[t:/]$ 지식_

리눅스 디바이스 드라이버 3rd PDF.

2008/12/31

https://lwn.net/Kernel/LDD3/

일반적인 DD 구현을 해 본적이 있거나, 와꾸 잡기를 띄엄띄엄 할 수 있다면, 디버깅을 제외하고는 다음과 같은 이슈사항들이 발생한다.

  1. 인터럽트 처리.
  2. 자원 잠그기.
  3. 레지스터 폴링 대신 스케쥴링 하기.
  4. DMA 메모리 맵핑
  5. 다른 드라이버에서 정보 가져오기.

예를 들어 FrameBuffer 드라이버를 유지하면서 2D 가속 명령어를 쓴다치면.

  1. 프레임버퍼와 동시 작업하면 안 됨 (배타적 작업, 자원 잠금 필요)
  2. 2D 가속 명령어 FIFO 관리를 해야 함 (레지스터 모니터링)
  3. 2D 가속 명령어 끝났음을 알리는 인터럽트 처리
  4. DMA와의 상관관계
  5. 드라이버간 상호 정보 참조 (커널 얼록 해온 메모리 주소등)

만들어진 이더넷 드라이버 포팅하고 GPIO 드라이버나 쪼물딱 거리는 것과 맨땅에서 부터 새로운 것을 만드는 것은 확실히 많이 다르다. ㅋ





공유하기













[t:/] is not "technology - root". dawnsea, rss